Bytes
Utilities to deal with sized Uint8Array
npm i @hazae41/bytes
Node Package 📦
Features
- 100% TypeScript and ESM
- Rust-like patterns
- Strongly typed Uint8Array and ArrayLike size
- Zero-cost abstraction over Uint8Array and ArrayLike
- Zero-copy conversion from ArrayBufferView
- Use native Buffer for faster execution on Node
- Unit-tested
Usage
Sized bytes
const bytes8 = Bytes.alloc(8)
Unsafe-allocated sized bytes
const bytes8 = Bytes.allocUnsafe(8)
Random sized bytes
const bytes8 = Bytes.random(8)
Unknown-sized bytes
const bytesX = new Uint8Array(8)
Runtime type-guarding
if (Bytes.is(bytesX, 8))
bytesX
else
bytesX
Type-guarded runtime equality check
if (Bytes.equals(bytesX, bytes8))
bytesX
else
bytesX
Runtime casting with Result pattern
const bytes16 = Bytes.tryCast(bytesX, 16).unwrap()
Conversion from sized arrays
const sized4 = Sized.cast([1, 2, 3, 4], 4).unwrap()
const bytes4 = Bytes.from(sized4)
Utf8, Hex, Base64, Ascii encoding
Bytes.fromUtf8(Bytes.toUtf8(bytesX))
Bytes.fromHex(Bytes.toHex(bytesX))
Bytes.fromBase64(Bytes.toBase64(bytesX))
Bytes.fromAscii(Bytes.toAscii(bytesX))
BigInt conversion
Bytes.fromBigInt(Bytes.toBigInt(bytesX))
Sized slicing and padding
const bytes8 = Bytes.sliceOrPadStart(bytesX, 8)